package com.fowo.api.model.wfs.cargo.item;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.fowo.api.common.validator.*;
import io.swagger.v3.oas.annotations.media.Schema;
import javax.validation.constraints.*;
import lombok.Getter;
import lombok.Setter;

/**
 * WFS货件子表 预览导入辅助模型(全字段为文本类型)
 * @author yl_ls
 */
@Getter
@Setter
public class WfsCargoItemImportPo {

  /** 所属WFS货件 */
  @ExcelProperty("所属WFS货件")
  private String parentWfsCargoCargoCode;

  @ExcelIgnore
  @Schema(title = "所属WFS货件")
  private String parentWfsCargo;

  /** 图片 */
  @ExcelProperty("图片")
  @Size(max = 50, message = "图片长度不能超过50")
  private String img;

  /** MSKU */
  @ExcelProperty("MSKU")
  @Size(max = 50, message = "MSKU长度不能超过50")
  private String msku;

  /** GTIN码 */
  @ExcelProperty("GTIN码")
  @Size(max = 50, message = "GTIN码长度不能超过50")
  private String gtin;

  /** 品名 */
  @ExcelProperty("*品名")
  @NotBlank(message = "品名不能为空")
  @Size(max = 500, message = "品名长度不能超过500")
  private String productNameName;

  @ExcelIgnore
  @Schema(title = "*品名")
  private String productName;

  /** SKU */
  @ExcelProperty("SKU")
  @Size(max = 50, message = "SKU长度不能超过50")
  private String sku;

  /** 商品类型 */
  @ExcelProperty("*商品类型")
  @NotBlank(message = "商品类型不能为空")
  @EnumsString(
    value = { "GTIN", "UPC", "EAN" },
    message = "商品类型只能是“GTIN”, “UPC”, “EAN”中的一个"
  )
  private String productType;

  /** 商品描述 */
  @ExcelProperty("*商品描述")
  @NotBlank(message = "商品描述不能为空")
  @Size(max = 50, message = "商品描述长度不能超过50")
  private String productDescribe;

  /** 申报量 */
  @ExcelProperty("*申报量")
  @NotBlank(message = "申报量不能为空")
  @IntegerString(message = "申报量数值格式不正确", label = "申报量")
  private String declareNum;

  /** 发货状态 */
  @ExcelProperty("发货状态")
  @EnumsString(
    value = { "是", "否" },
    message = "发货状态只能是“是”, “否”中的一个"
  )
  private String shipstatus;

  /** 签收量 */
  @ExcelProperty("签收量")
  @LongString(message = "签收量数值格式不正确", label = "签收量", min = 0L)
  private String receivedquantity;

  /** 箱子数量 */
  @ExcelProperty("*箱子数量")
  @NotBlank(message = "箱子数量不能为空")
  @IntegerString(
    message = "箱子数量数值格式不正确",
    label = "箱子数量",
    min = 0
  )
  private String boxNum;

  /** 单箱产品数量 */
  @ExcelProperty("*单箱产品数量")
  @NotBlank(message = "单箱产品数量不能为空")
  @IntegerString(
    message = "单箱产品数量数值格式不正确",
    label = "单箱产品数量",
    min = 0
  )
  private String singleboxquantity;

  /** 预估到期时间 */
  @ExcelProperty("*预估到期时间")
  @NotBlank(message = "预估到期时间不能为空")
  @DateString(message = "预估到期时间不是有效的日期格式")
  private String estimatedExpirationTime;

  /** 增值服务 */
  @ExcelProperty("*增值服务")
  @NotBlank(message = "增值服务不能为空")
  @EnumsString(
    value = { "需要", "不需要" },
    message = "增值服务只能是“需要”, “不需要”中的一个"
  )
  private String valueaddedservices;

  /** 签收数量(损坏) */
  @ExcelProperty("签收数量(损坏)")
  @IntegerString(
    message = "签收数量(损坏)数值格式不正确",
    label = "签收数量(损坏)",
    min = 0
  )
  private String receivedNum;

  /** 已发货数量 */
  @ExcelProperty("已发货数量")
  @IntegerString(
    message = "已发货数量数值格式不正确",
    label = "已发货数量",
    min = 0
  )
  private String shipmentsNum;

  /** 申发差异 */
  @ExcelProperty("申发差异")
  @IntegerString(
    message = "申发差异数值格式不正确",
    label = "申发差异",
    min = 0
  )
  private String shenfadifference;

  /** 申收差异 */
  @ExcelProperty("申收差异")
  @IntegerString(
    message = "申收差异数值格式不正确",
    label = "申收差异",
    min = 0
  )
  private String shenshoudifference;

  /** 收发差异 */
  @ExcelProperty("收发差异")
  @IntegerString(
    message = "收发差异数值格式不正确",
    label = "收发差异",
    min = 0
  )
  private String shoufadifference;
}
